// =====================================================================================
//  Copyright (C) 2024 by Jiaxing Shao. All rights reserved

//  文 件 名:  Renderer.h
//  作    者:  Jiaxing Shao, 980853650@qq.com
//  创建时间：  2024-08-01 21:58
//  描    述:  
// =====================================================================================
#pragma once

#include <string>

#define ASSERT(x) \
    if (!(x))     \
        exit(0);

#define GLCall(x)   \
    GLClearError(); \
    x;              \
    ASSERT(GLLogCall(#x, __FILE__, __LINE__))

void GLClearError();
bool GLLogCall(const char *function, const char *file, int line);

/**
 * 查询当前设备支持的顶点属性个数
 * @return 最大顶点属性个数
 */
int get_max_vertex_attribs();

/**
 * 加载一个纹理并返回该纹理的ID
 * @param path 纹理文件名称
 * @param directory 纹理路径
 */
unsigned int texture_from_file(const char *path, const std::string &directory, bool gamma = false);